//#include <iostream>
//using namespace std;
//
//int main()
//{
//    string str1, str2;
//    getline(cin, str1);
//    getline(cin, str2);
//    string ret;
//    for (auto& x : str1)
//    {
//        if (str2.find(x) == std::string::npos)
//        {
//            ret += x;
//        }
//    }
//
//    cout << ret << endl;
//    return 0;
//}

//#include <iostream>
//using namespace std;
//
//int main()
//{
//    string s, t;
//    getline(cin, s);
//    getline(cin, t);
//    bool hash[300] = { 0 };
//
//    for (auto& ch : t) hash[ch] = true;
//    string ret;
//    for (auto& x : s)
//    {
//        if (!hash[x])
//            ret += x;
//    }
//
//    cout << ret << endl;
//    return 0;
//}

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
//class Solution {
//public:
//	ListNode* FindFirstCommonNode(ListNode* pHead1, ListNode* pHead2)
//	{
//		int len1 = 1;
//		int len2 = 1;
//		ListNode* cur1 = pHead1;
//		ListNode* cur2 = pHead2;
//		while (cur1 && cur1->next)
//		{
//			len1++;
//			cur1 = cur1->next;
//		}
//
//		while (cur2 && cur2->next)
//		{
//			len2++;
//			cur2 = cur2->next;
//		}
//
//		if (cur1 != cur2)
//			return nullptr;
//
//		int flag = 0;
//		int val = 0;
//		if (len1 > len2)
//		{
//			val = len1 - len2;
//		}
//		else
//		{
//			val = len2 - len1;
//			flag = 1;
//		}
//
//		cur1 = pHead1;
//		cur2 = pHead2;
//		if (flag == 0)
//		{
//			while (val--)
//				cur1 = cur1->next;
//		}
//		else
//		{
//			while (val--)
//				cur2 = cur2->next;
//		}
//
//		while (cur1 != cur2)
//		{
//			cur1 = cur1->next;
//			cur2 = cur2->next;
//		}
//		return cur1;
//	}
//};

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
//class Solution {
//public:
//	ListNode* FindFirstCommonNode(ListNode* pHead1, ListNode* pHead2)
//	{
//		ListNode* cur1 = pHead1;
//		ListNode* cur2 = pHead2;
//		while (cur1 != cur2)
//		{
//			cur1 = cur1 != nullptr ? cur1->next : pHead2;
//			cur2 = cur2 != nullptr ? cur2->next : pHead1;
//		}
//		return cur1;
//	}
//};


//#include <iostream>
//using namespace std;
//
//long long n;
//const long long N = 300010;
//char arr[N];
//long long s;
//long long h;
//long long y;
//long long ret;
//
//int main()
//{
//    cin >> n;
//    for (long long i = 0; i < n; i++)
//    {
//        cin >> arr[i];
//        if (arr[i] == 's')
//            s++;
//        else if (arr[i] == 'h')
//            h++;
//        else if (arr[i] == 'y')
//            y++;
//
//    }
//    ret = s * h * y;
//    cout << ret << endl;
//    return 0;
//}

#include <iostream>
#include <string>
using namespace std;

int n;
string str;

int main()
{
    cin >> n >> str;
    long long s = 0, h = 0, y = 0;

    for (auto& ch : str)
    {
        if (ch == 's') s++;
        else if (ch == 'h') h += s;
        else if (ch == 'y') y += h;
    }
    cout << y << endl;
    return 0;
}